<?	
	/* Se asegura que el archivo es incluido por el index */
	defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );  
		$this->oTmpObject = new Encuesta_contacto_frm( $this );
	
	class Encuesta_contacto_frm extends Frm
	{
	function setValue ( $ncEncuesta, $ncContacto )
		{
			$cSql = "SELECT  cNombre,ncEncuestador, ncEvento,  cApellido,  cEmail,  dNacimiento,  dEncuesta, cArchivo
				FROM gtEncuestaContacto
				WHERE ncEncuesta = '$ncEncuesta' AND  ncContacto = '$ncContacto' ";
			$aDatos = $this->oDatabase->getArray($cSql);	
			$this->setFieldsArray ( $aDatos );
		}
	function Encuesta_contacto_frm( &$oModule )
		{
			$this->Frm( $oModule );
			$this->setEncType( 'multipart/form-data' );
			//Crea los Objetos de los campos de edicion
			$this->aFields['ncEncuesta']		= new InputList( "Encuesta", "ncEncuesta" );
			$this->aFields['ncContacto']		= new Input( "Codigo", "ncContacto", '', false, true );
			$this->aFields['ncEncuestador']		= new InputList( "Encuestador", "ncEncuestador" );
			$this->aFields['ncEvento']			= new InputList( "Evento", "ncEvento" );
			$this->aFields['cNombre']			= new InputText( "Nombre", "cNombre" );
			$this->aFields['cApellido']			= new InputText( "Apellido", "cApellido" );
			$this->aFields['cEmail']			= new InputText( "Email", "cEmail" );
			$this->aFields['dNacimiento']		= new InputDate( "Nacimiento", "dNacimiento" );
			$this->aFields['dEncuesta']			= new InputDate( "Fecha", "dEncuesta" );	
			//$this->aFields['cFoto']				= new InputPhoto( "Foto", "cFoto", "", 380, 506, "files/imagenes_encuesta/");
			$this->aFields['cArchivo']			= new InputFile( "Archivo", "cArchivo", "", "files/imagenes_encuesta/");
			
		}
	function makeComplex( $nTipo )
		{
			$cReturn = '<br/>';
			$ncEncuesta = $this->aFields[ncEncuesta]->getValue();
			$ncContacto = $this->aFields[ncContacto]->getValue();
			if ( $ncEncuesta  ) 
			{
				$cSql = "SELECT EIt.ncItem, ncGrupo, cdItem, nTipo, cOpciones 
									FROM gtEncuestaItem As EIt 
									JOIN gtItem as Ite 
										ON Ite.ncItem = EIt.ncItem 
									WHERE EIt.ncEncuesta = $ncEncuesta 
									ORDER BY ncGrupo, nOrden";
				$aItems = $this->oDatabase->getMatrix($cSql);
				foreach($aItems as $aItem)
				{
					// Busca los valores
					if ( $ncContacto ) 
					{
						$cSql = "SELECT nValor FROM gtEncuestaDetalle WHERE ncEncuesta =$ncEncuesta AND ncContacto= $ncContacto AND ncItem = ". $aItem[ncItem];
						$aValue = $this->oDatabase->getArray($cSql);
					}
					if ( $aItem[ncGrupo] != $ncGrupoAnterior )
					{
						$cdGrupo = $this->oDatabase->getData("SELECT cdGrupo FROM gtEncuestaGrupo WHERE ncEncuesta = $ncEncuesta AND ncGrupo = " . $aItem[ncGrupo] );
						$cReturn .= "<h2>$cdGrupo</h2><br/>";
						$ncGrupoAnterior = $aItem[ncGrupo];
					}
					switch( $aItem[nTipo] ) 
					{
						case 1: // Numero
							$oField = new InputNumber( '', 'item_' . $aItem[ncItem], $aValue[0] );
							break;
						case 2: // Si/No
							$oField = new InputList( '', 'item_' . $aItem[ncItem] , $aValue[0] );
							$oField->addOption ( 1 , 'Si') ;
							$oField->addOption ( 0 , 'No') ;
							break;
						case 3: // Fecha
							$oField = new InputDate( '', 'item_' . $aItem[ncItem] , $aValue[0] );
							break;
						case 5: // Consulta
							$oField = new InputList( '', 'item_' . $aItem[ncItem], $aValue[0] );
							$oField->setMatrix( $this->oDatabase->getMatrix($aItem[cOpciones] ) );
							break;
						case 4: case 6: case 7: // Lista // Radio // Check
							if ( $aItem[nTipo] == 4 ) 
								$oField = new InputList( '', 'item_' . $aItem[ncItem] , $aValue[0] );
							if ( $aItem[nTipo] == 6 ) 
								$oField = new InputCheck( '', 'item_' . $aItem[ncItem], $aValue[0] );
							if ( $aItem[nTipo] == 7 ) 
							{
								$oField = new InputCheck( '', 'item_' . $aItem[ncItem], $aValue );
								$oField->setMultiple();
								$oField->setFormName($this->getFormName());
							}
							$aOpciones = explode( ',', $aItem[cOpciones] )  ;
							$cValor = 0;
							foreach( $aOpciones as $cOpcion ) 
							{
								$nPos = strpos( $cOpcion, ':' );
								if ( $nPos === FALSE ||  $cValor != 0)
									$oField->addOption ( ++$cValor , $cDescripcion ) ;
								else
								{
									$oField->addOption ( trim(substr( $cOpcion , 0 , $nPos )) ,  trim(substr( $cOpcion , $nPos + 1))  ) ;
								}
							}
							break;
					}
					$oField->setLabel($aItem[cdItem] ) ;
					$cReturn .= $oField->showLabel() . ":<br/>"; 
					$cReturn .= $oField->make() . "<br/>";
				}
			}
			return $cReturn ;
		}
	function setLevel( $nLevel)
		{
			switch ( $nLevel )
			{
				case 1: 
					$this->aInput = array ('ncEncuesta','ncContacto' );
					break;
				case 2: 
					if ( getParam('ncEncuesta') == 2 )
						$this->aInput = array ('ncEncuesta', 'ncContacto','dEncuesta','cNombre','cApellido','cArchivo','cEmail','dNacimiento', 'makeComplex' );
					else
						$this->aInput = array ('ncEncuesta', 'ncContacto','dEncuesta','ncEncuestador', 'ncEvento','cNombre','cApellido','cEmail','dNacimiento', 'makeComplex' );
					break;
			}
		}
	function initializeForm()
		{
			// Si viene el Ubicacion hace el retrieve
				if ( $this->isRetrievable() && $this->aFields['ncEncuesta']->getValue() && $this->aFields['ncContacto']->getValue() )
				{
					$this->setValue( $this->aFields['ncEncuesta']->getValue(), $this->aFields['ncContacto']->getValue() );
				}
			// Configura el Titulo
				$this->setLabel( "Encuesta Contacto" );	
			return true;
		}
	function initializeField( $cField , &$oField )
		{			
			switch ( $cField )
			{
				case 'ncEncuestador':
						$cSql = "SELECT ncEncuestador, cdEncuestador FROM gtEncuestaEncuestador ";
						if ($this->aFields['ncEncuesta']->getValue() ) $cSql .=  ' WHERE ncEncuesta = ' . $this->aFields['ncEncuesta']->getValue() ;
						$oField->setMatrix($this->oDatabase->getMatrix($cSql));
						$oField->addActionArray( 2, $this->oModule->getActionArray( AGREGAR_ENCUESTAENCUESTADOR), 'ncEncuesta=' . $this->aFields['ncEncuesta']->getValue() );
						$oField->addActionArray( 3, $this->oModule->getActionArray( MODIFICAR_ENCUESTAENCUESTADOR), 'ncEncuesta=' . $this->aFields['ncEncuesta']->getValue()  );
						if ( !$oField->getValue() ) $oField->setValue( $_SESSION[ncEncuestador] );
					break;
				case 'ncEvento':
						$cSql = "SELECT ncEvento, cdEvento FROM gtEncuestaEvento ";
						if ($this->aFields['ncEncuesta']->getValue() ) $cSql .=  ' WHERE ncEncuesta = ' . $this->aFields['ncEncuesta']->getValue() ;
						$oField->setMatrix($this->oDatabase->getMatrix($cSql));
						$oField->addActionArray( 2, $this->oModule->getActionArray( AGREGAR_ENCUESTAEVENTO), 'ncEncuesta=' . $this->aFields['ncEncuesta']->getValue() );
						$oField->addActionArray( 3, $this->oModule->getActionArray( MODIFICAR_ENCUESTAEVENTO), 'ncEncuesta=' . $this->aFields['ncEncuesta']->getValue()  );
						if ( !$oField->getValue() )$oField->setValue( $_SESSION[ncEvento] );
					break;
				case 'ncEncuesta':
						if ($oField->getValue() ) 
							$oField->setHidden();
						else
						{
							$cSql = "SELECT ncEncuesta, cdEncuesta FROM gtEncuesta";
							$oField->setMatrix($this->oDatabase->getMatrix($cSql));
							$oField->setMandatory($this->isMandatory());
						}
					break;
					case 'cFoto':
						$oField->setCoeficiente( 1.03);
						$oField->setMaxCoeficiente( 1.03);
						$oField->setPopUp(false);
						$oField->setFormName($this->getFormName());
					break;
					case 'cArchivo':
						$oField->setFormName($this->getFormName());
						$oField->setBuscar(false);
					break;
				case 'dEncuesta':
						//$oField->setDefault(Date('Y-m-d') );
						//if ( !$oField->getValue() ) $oField->setValue(  $_SESSION[dEncuesta]  ? $_SESSION[dEncuesta]  : Date('Y-m-d') );
					break;
			}
 		}
	}
?>